package com.zq.多线程设计模式.Immutable设计模式;

/**
 * @author Jiu
 * @description：简单不可变对象  经典就是String 和基本数据类型包装类  操作的时候直接返回一个对象,不修改之前的对象
 * 　1）所有成员变量必须是private
 * 　　2）最好同时用final修饰(非必须)
 * 　　3）不提供能够修改原有对象状态的方法
         * 最常见的方式是不提供setter方法
         * 如果提供修改方法，需要新创建一个对象，并在新创建的对象上进行修改
 * 　　4）通过构造器初始化所有成员变量，引用类型的成员变量必须进行深拷贝(deep copy)
 * 　　5）getter方法不能对外泄露this引用以及成员变量的引用
 * 　　6）最好不允许类被继承(非必须)
 *
 * https://www.cnblogs.com/yanggb/p/12453857.html
 * @date 2021/04/08   10:57
 **/
public final class MMSCInfo {

    private final String deviceID;

    private final String url;

    private final int maxAttachmentSizeInBytes;

    public MMSCInfo(String deviceID, String url, int maxAttachmentSizeInBytes) {
        this.deviceID = deviceID;
        this.url = url;
        this.maxAttachmentSizeInBytes = maxAttachmentSizeInBytes;
    }

    public MMSCInfo(MMSCInfo prototype) {
        this.deviceID = prototype.deviceID;
        this.url = prototype.url;
        this.maxAttachmentSizeInBytes = prototype.maxAttachmentSizeInBytes;
    }

    public String getDeviceID() {
        return deviceID;
    }

    public String getUrl() {
        return url;
    }

    public int getMaxAttachmentSizeInBytes() {
        return maxAttachmentSizeInBytes;
    }
}